package grafo;

import java.util.Random;

import paquete.ConjuntoArrBoolean;
import paquete.ConjuntoTDA;

public class GrafosArr implements GrafosTDA {

	int cant;
	int[]Etiq;
	int[][]MAdy;
	
	static int n=100;
	
	public ConjuntoTDA Adyacentes(int v){
	ConjuntoTDA A=new ConjuntoArrBoolean();
	A.inicializarConjunto();
	int iv=Vertice2Indice(v);
		for(int i=0;i<cant;i++)
			if (MAdy[iv][i]!=-1)
				A.agregar(Etiq[i]);
		return A;
	}

	public int ElegirVertice(){
		Random i=new Random();		
		return Etiq[i.nextInt(cant)];
	}
	
	public void AgregarArista(int vo, int vd, int costo) {
	int o= Vertice2Indice(vo);
	int d= Vertice2Indice(vd);
	MAdy[o][d]=costo;

	}
	
	public void AgregarVertice(int v) {
		Etiq[cant]=v;
		for(int i=0;i<=cant;i++){
			MAdy[cant][i]=-1;
			MAdy[i][cant]=-1;
		}
		cant++;
	}

	
	public void EliminarArista(int vo, int vd) {
		int o=Vertice2Indice(vo);
		int d=Vertice2Indice(vd);
		MAdy[o][d]=-1;
	}
	
	public void EliminarVertice(int v){
		
	}
	public void InicializarGrafo() {
		cant=0;
		Etiq=new int[n];
		MAdy=new int[n][n];
	}

	
	public int PesoArista(int vo, int vd) {
		int o=Vertice2Indice(vo);
		int d=Vertice2Indice(vd);
		return MAdy[o][d];
	}

	
	public ConjuntoTDA vertices() {
		ConjuntoTDA v=new ConjuntoArrBoolean();
		v.inicializarConjunto();
		for (int i=0;i<cant;i++)
			v.agregar(Etiq[i]);
		return v;
		
	}

	private int Vertice2Indice(int v){
		int i;
		for (i= cant-1;(i>=0&&Etiq[i]!=v);i--);
		return i;
	}
	
	
}
